home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 2002 November / SGI Freeware 2002 November - Disc 2.iso / dist / fw_glimpse.idb / usr / freeware / src / glimpse-3.0 / libtemplate / util / harvest.c.z / harvest.c
C/C++ Source or Header  |  1997-09-09  |  5KB  |  141 lines

  1. static char rcsid[] = "$Id: harvest.c,v 1.7 1995/02/04 01:37:52 hardy Exp $";
  2. /*
  3.  *  harvest.c - Routines specific to the Harvest installation
  4.  *
  5.  *  Darren Hardy, hardy@cs.colorado.edu, December 1994
  6.  *
  7.  *  ----------------------------------------------------------------------
  8.  *  Copyright (c) 1994, 1995.  All rights reserved.
  9.  *  
  10.  *          Mic Bowman of Transarc Corporation.
  11.  *          Peter Danzig of the University of Southern California.
  12.  *          Darren R. Hardy of the University of Colorado at Boulder.
  13.  *          Udi Manber of the University of Arizona.
  14.  *          Michael F. Schwartz of the University of Colorado at Boulder. 
  15.  *  
  16.  *  This copyright notice applies to all code in Harvest other than
  17.  *  subsystems developed elsewhere, which contain other copyright notices
  18.  *  in their source text.
  19.  *  
  20.  *  The Harvest software was developed by the Internet Research Task
  21.  *  Force Research Group on Resource Discovery (IRTF-RD).  The Harvest
  22.  *  software may be used for academic, research, government, and internal
  23.  *  business purposes without charge.  If you wish to sell or distribute
  24.  *  the Harvest software to commercial clients or partners, you must
  25.  *  license the software.  See
  26.  *  http://harvest.cs.colorado.edu/harvest/copyright,licensing.html#licensing.
  27.  *  
  28.  *  The Harvest software is provided ``as is'', without express or
  29.  *  implied warranty, and with no support nor obligation to assist in its
  30.  *  use, correction, modification or enhancement.  We assume no liability
  31.  *  with respect to the infringement of copyrights, trade secrets, or any
  32.  *  patents, and are not responsible for consequential damages.  Proper
  33.  *  use of the Harvest software is entirely the responsibility of the user.
  34.  *  
  35.  *  For those who are using Harvest for non-commercial purposes, you may
  36.  *  make derivative works, subject to the following constraints:
  37.  *  
  38.  *  - You must include the above copyright notice and these accompanying 
  39.  *    paragraphs in all forms of derivative works, and any documentation 
  40.  *    and other materials related to such distribution and use acknowledge 
  41.  *    that the software was developed at the above institutions.
  42.  *  
  43.  *  - You must notify IRTF-RD regarding your distribution of the 
  44.  *    derivative work.
  45.  *  
  46.  *  - You must clearly notify users that your are distributing a modified 
  47.  *    version and not the original Harvest software.
  48.  *  
  49.  *  - Any derivative product is also subject to the restrictions of the 
  50.  *    copyright, including distribution and use limitations.
  51.  */
  52. #include <stdio.h>
  53. #include <string.h>
  54. #include <stdlib.h>
  55. #include <sys/param.h>
  56. #include "util.h"
  57.  
  58. #define DEFAULT_HARVEST_HOME "/usr/local/harvest"
  59.  
  60. /*
  61.  *  harvest_bindir() - Returns a static buffer that contains the 
  62.  *  pathname that contains the binaries for Harvest.
  63.  */
  64. char *harvest_bindir()
  65. {
  66.     static char bindir[MAXPATHLEN + 1];
  67.     char *s;
  68.  
  69.     if ((s = getenv("HARVEST_HOME")) != NULL)
  70.         sprintf(bindir, "%s/bin", s);
  71.     else
  72.         sprintf(bindir, "%s/bin", DEFAULT_HARVEST_HOME);
  73.     return (bindir);
  74. }
  75.  
  76. /*
  77.  *  harvest_libdir() - Returns a static buffer that contains the 
  78.  *  pathname that contains the libraries for Harvest.
  79.  */
  80. char *harvest_libdir()
  81. {
  82.     static char libdir[MAXPATHLEN + 1];
  83.     char *s;
  84.  
  85.     if ((s = getenv("HARVEST_HOME")) != NULL)
  86.         sprintf(libdir, "%s/lib", s);
  87.     else
  88.         sprintf(libdir, "%s/lib", DEFAULT_HARVEST_HOME);
  89.     return (libdir);
  90. }
  91.  
  92. /*
  93.  *  harvest_topdir() - Returns a static buffer that contains the 
  94.  *  pathname that contains the libraries for Harvest.
  95.  */
  96. char *harvest_topdir()
  97. {
  98.     static char topdir[MAXPATHLEN + 1];
  99.     char *s;
  100.  
  101.     if ((s = getenv("HARVEST_HOME")) != NULL)
  102.         sprintf(topdir, "%s", s);
  103.     else
  104.         sprintf(topdir, "%s", DEFAULT_HARVEST_HOME);
  105.     return (topdir);
  106. }
  107.  
  108. /*
  109.  *  add_harvest_to_path() - If xtra is not-NULL, then it will
  110.  *  add harvest_libdir() + xtra to the path as well.  For example,
  111.  *  a Gatherer process would call:
  112.  *              add_harvest_to_path("gatherer:")
  113.  *  to add $harvest_libdir/ and $harvest_libdir/gatherer
  114.  */
  115. void harvest_add_path(xtra)
  116. char *xtra;
  117. {
  118.     char *s = getenv("PATH"), *newpath, *oldpath, *q;
  119.     char *tmpxtra;
  120.  
  121.     if (s == NULL)
  122.         fatal("This process does not have a PATH environment variable");
  123.     newpath = xmalloc(strlen(s) + BUFSIZ);
  124.     sprintf(newpath, "PATH=%s", s);
  125.     sprintf(newpath + strlen(newpath), ":%s", harvest_bindir());
  126.     if (xtra != NULL) {
  127.         tmpxtra = strdup(xtra);
  128.         q = strtok(tmpxtra, ":");
  129.         while (q != NULL) {
  130.             sprintf(newpath + strlen(newpath), ":%s/%s",
  131.                 harvest_libdir(), q);
  132.             q = strtok(NULL, ":");
  133.         }
  134.         xfree(tmpxtra);
  135.     }
  136. #ifdef DEBUG
  137.     log("Adding new PATH to environment: %s\n", newpath);
  138. #endif
  139.     (void) putenv(newpath);
  140. }
  141.